/**
 * 设置您的应用以拦截并处理任意特定协议的URL的点击事件。 在本指南中，我们假定这个协议名为“electron-fiddle://”。
 */
const { app, dialog } = require('electron')
const pathModule = require('path')


module.exports = (win) => {
  const protocalName = 'electron-my'
  if (process.defaultApp) {
    if (process.argv.length >= 2) {
      app.setAsDefaultProtocolClient(protocalName, process.execPath, [pathModule.resolve(process.argv[1])])
    }
  } else {
    app.setAsDefaultProtocolClient(protocalName)
  }

  // 与 MacOS 或 Linux 不同，在 Windows 下需要其他的代码。 这是因为在 Windows 中需要特别处理在同一个 Electron 实例中打开的协议的内容
  const gotTheLock = app.requestSingleInstanceLock()

  if (!gotTheLock) {
    app.quit()
  } else {
    app.on('second-instance', (event, commandLine, workingDirectory) => {
      if (win) {
        if (win.isMinimized()) {
          win.restore()
        }
        console.info('focus main window')
        win.focus()
      }
    })

    app.on('open-url', (event, url) => {
      // 启动 Electron 应用后，在浏览器内键入包含该自定义协议的 URL，如 "electron-my://open" ，观察应用是否正确响应并显示一个错误提示对话框。
      console.info('open url by protocal: ', url)
      dialog.showErrorBox('Welcome', `url: ${url}`)
    })
  }
}